'use strict';

/**
 * @controller 莫凡服务端接口实例
 * @description 由于云应用的调用会自动在query里面添加参数,因此在使用get接口时,参数验证需要单独去做
 * @description 云应用开发:https://miniapp.open.taobao.com/docV3.htm?docId=118538&docType=1&tag=dev
 */

const Controller = require('egg').Controller;

class demo extends Controller {

  /**
   * 示例接口：GET
   * @summary 获取用户信息
   * @description 获取用户信息
   * @router get /dev/api/v1/test
   * @request query string *user_id 用户id 必填
   * @response 200 BasiCode 返回结果
   */
  async test() {
    const {
      ctx,
    } = this;
    try {

      // 参数验证 系统参数标准验证
      const Joi = ctx.app.Joi;
      const schema = Joi.object().keys({
        mix_nick: Joi.string().required(),
      });
      // GET接口需要单独提出参数进行验证,不然需要写上所有的参数
      const mix_nick = ctx.request.query.mix_nick;
      ctx.validate(schema, {
        mix_nick,
      });
      console.log("================================")
      console.log(ctx)
      // 业务处理
      const retObj = await ctx.service.demoService.test(mix_nick);
      // 返回结果
      console.log("================================")
      ctx.body = await ctx.helper.basicode(0, retObj);
    } catch (e) {
      // 返回异常
      ctx.body = await ctx.helper.basicode(e.code || 8000, e);
    }
  }


  /**
   * 示例接口：POST
   * @summary 删除用户
   * @description 删除用户
   * @router post /dev/api/v1/testPost
   * @request body testRequest *body user_id:用户ID 必填
   * @response 200 BasiCode 返回结果
   */
  async testPost() {
    const {
      ctx,
    } = this;
    try {
      // 参数验证 系统参数标准验证
      const Joi = ctx.app.Joi;
      const schema = Joi.object().keys({
        user_id: Joi.string().required(),
      });
      const user_id = ctx.request.body.user_id;
      ctx.validate(schema, {
        user_id,
      });
      // 业务处理
      const retObj = await ctx.service.demoService.testPost(user_id);
      // 返回结果
      ctx.body = await ctx.helper.basicode(0, retObj);
    } catch (e) {
      const resp = await ctx.helper.basicode(e.code || 8000, e);
      ctx.body = resp;
    }
  }
}

module.exports = demo;